Computer networking uses various data communications techniques to transmit information from one computer to another over a network. A typical network includes a series of interconnected data communications devices that can each store and forward or exchange data from one device to another, enabling the exchange of information. In a typical computer networking application, source and destination computers are personal computers, workstations, or the like which each include a modem or other transmitter that is used to transmit the data from the computer. The modem accepts data from an application executing on the computer and encodes the data according to one or more of a number of standardized data communication protocols. The modem can also decode data that is received. The specific protocol selected may be based on the function of the application in use and may create data having a specific associated type.
Depending upon which applications are in use, there may be many different types of data transmitted and received across a network. For example, voice data, video data, facsimile data and traditional application data (referred to as modem data) can all be digitized and encoded according to respective encoding protocols, with each protocol designed to optimally handle data of its specific type. Voice data for instance, must be sampled frequently and in real-time, and thus the mechanisms (i.e. protocols) used to send and receive voice data typically use small packet sizes that must be transmitted and received in a predetermined order over data links offering a more or less guaranteed quality of service (QoS). Conversely, regular application (modem) data can be transmitted using large packets that need not arrive in real-time nor in any particular order and delays in transmission are generally allowable.
Quite often, a network connection originates at a source computer host when data is transmitted from the modem to a central telephone switching office over a telephone line, for example. The central office may host connections from several source or destination computers each coupled via modem to the central office over dial-up or dedicated connections. Each connection is tantamount to a phone call and is frequently referred to simply as a xe2x80x9ccallxe2x80x9d or a xe2x80x9cDS0.xe2x80x9d There may be a number of central offices linked together which form a connection-based wide area network or WAN. To send the data on each call in each central office to a large packet-based computer network such as the Internet, the calls are multiplexed onto transmission links, such as T1, T3, E1, TDM or OC3 links, each of which offers a high bandwidth and high data rate. These high speed multiplexed links are coupled to a network access server (NAS).
Access servers are typically located at the facilities of an Internet Service Provider. An access server accepts the high bandwidth multiplexed links and routes the call connections containing the modulated data to a packet network. The access server also accepts data packets traveling in the reverse direction from the packet network to remote hosts located on the WAN.
Within an access server, the high bandwidth TI, T3, E1, TDM and/or OC3 links containing calls from the WAN are received by a framer. The framer accepts the high bandwidth connections and outputs a number of Time Division Multiplexed (TDM) streams, each of which can include many multiplexed calls in associated timeslots. Each portion of data or DS0 in timeslots associated with each call has an associated data type, such as voice data, video data, facsimile data, modem data, or another type of data.
Each TDM stream is directed to a module to handle data within calls carried in that stream. A module is generally a circuit card that can accept and process the call data in one or more TDM streams according to a single service associated with that module. The module processes the calls in that TDM stream according to a service for which the module was designed. In other words, the specific module selected is dependant upon the type of data in the TDM stream. For instance, a module designed for voice data may be able to accept and process a TDM stream containing up to 32 simultaneous voice calls. Another module may be designed to accept calls containing video data, and another for modem data. The modules accept the TDM streams and convert the data for each call into a packet format for eventual transmission to a packet network.
In some prior art systems, a module that is designed to handle a specific type of data, such as commonly transmitted modem data, can use its modem data configuration to handle others types of data. As an example, a module configured for modem data can typically be configured to service voice data as well. The module configuration refers to such things as the length and number of data and message queues provided in the module, the protocol error checking used, and the data handling protocols that are used by the module. A module configured for modem data may, for example, use longer queues and create large packets full of data, while a module configured for voice may use short queues and create many packets with smaller amounts of data due to the real-time requirements of voice.
Modules configured to service one data type may use that configuration to service data of other types. In such cases, the underlying configuration of these modules does not change. Rather, the modules merely piggyback or shoehorn other data types into the constructs used for the original configuration. As an example, voice data can be transmitted through a module designed with queue lengths and protocols which are optimized for handling packets of modem data.
In the access server, a number of modules are typically coupled to another circuit card called a carrier card. A typical carrier card can host up to six modules. Like the modules, carrier cards are designed to most effectively handle data streams associated with the modules which they host. By way of example, a carrier card that hosts six voice modules is specifically designed to work with voice data, while a carrier card that hosts modem data modules is designed to most effectively handle streams of modem data. In a typical access server, there can be multiple carrier cards of different types, each hosting multiple modules.
In other access server systems, the modules can couple directly to a router backplane without a carrier card. The router backplane includes a router processor. The router processor is configured to specifically communicate with the modules. In either the case of a module/carrier card configuration, or the module/backplane configuration, an access server can service many various types of data connections by routing the different call types to modules designed to best serve the data in the call connections.
The backplane links connections from modules to one or more computer networks such as the Internet. The backplane may include knowledge of what type of data is being provided from a specific carrier card and/or module. Thus, if the backplane processor detects a carrier card hosting voice modules, preference may be given to data passing to and from this carrier card due to the real-time nature of voice data. Generally however, the backplane accepts the packetized data connections from each carrier card/module configuration and routes them to an appropriate computer network segment. In the reverse direction, the backplane accepts packets from the computer network segments and routes them to an appropriate module where the service converts the packet data to TDM stream data.
Prior art data communication devices such as the access server noted above suffer from a variety of inefficiencies in design and implementation. In particular, modules within an access server are more or less dedicated to servicing connections of a specific type, such as modem data, voice, video, facsimile, or another data type. The configuration of queue lengths, error correction schemes, protocols and so forth is generally fixed in prior art modules. If a protocol changes, the fixed configuration of the module may not support the new features of the protocol. As such, new modules may be required to support new protocols and carrier card design may be effected as well.
Another problem with prior art access server systems is that modules are designed to offer one basic type of service, such as voice or data. The protocols provided by the modules do not optimally adapt to servicing other types of data. This results in lower throughput rates when a module services connections which it is not optimally designed to service.
Carrier cards are also designed to support particular module types. Thus, a carrier card designed to support modem modules may not work efficiently or even at all when used to support modules designed to service voice call connections. As a result, different carrier card and module combinations must be installed in an access server to effectively service connections of different data types. This increases manufacturing costs since both specific carrier cards and modules are produced to handle different types of data.
The invention overcomes these problems. The invention provides a module that is generic in nature and that can provide protocol support for a number of different services. The module is called a multi-service module. A multi-service carrier card is also provided which is designed to support the multi-service modules. A messaging interface system is provided for a data communications device that is hosting the modules to determine the services available from the modules and to configure a module most appropriately for data processing according to those services. Preferably, this system allows a host to provide a module with information concerning its capabilities. In turn, the module can indicate to the host what services are offered by the module. The interface system uses a shared memory to hold the queues and allow the exchange of messages in one embodiment.
According to another aspect of the invention, a module provides data communications services. The module includes an interface for transferring a plurality of streams of data into and out of the module. The interface includes at least one port capable of transferring incoming and outgoing streams of multiplexed data. A shared memory is also coupled to the interface and includes a plurality of data queues. Each data queue buffers incoming and outgoing streams of packet data. A plurality of service processing units are provided in the module and are coupled to the shared memory. The service processing units support a plurality of services which operate on the streams of data being accepted through the interface.
The service processing units accept and process incoming streams of multiplexed data according to one of the services. The units convert the incoming streams of multiplexed data to outgoing streams of packet data and accept and processes incoming streams of packet data according to one of the services and convert the incoming streams of packet data to outgoing streams of multiplexed data. Also contained on the module is a processor which is coupled to the shared memory, the interface, and the service processing units. Generally, the processor controls the operation of the module to subject the streams of data to the plurality of services.
The services offered by the service processing units can be fax services, voice services, modem services, data services, and so forth. The invention is not limited to these services, but rather, can provide all types of protocols processing and data services, including encryption, compression, encoding, decoding, and the like. For each type of service, such as voice, data and video, a specific set of messages called a message catalog is provided. Thus, there may be a voice message catalog, a video message catalog, a data message catalog, and so forth. Each message catalog comprises messages that may be sent from the host to the module to configure the service associated with that catalog on the module. For example, if a module offers voice, video and digital data services (e.g., ISDN), the host can use specific messages from a voice message catalog, a video message catalog, and a data message catalog to configure each of those services for use within the module as those types of data are required to be processed. The messages from the message catalogs can perform such tasks as selecting a specific data rate for the service, adjusting flow control, parity, and so forth.
In operation of the interface system of this invention, an identity table is created within the shared memory upon start-up of the module. The identity table contains information identifying each of the plurality of services supported by the module. A host configuration table is also created upon start-up of the module in the shared memory. The host configuration table identifies the configuration of a host that is hosting the module. A downloaded module image runs on the module processor and reads the host configuration table to determine the configuration of the host that is hosting the module and creates the information identifying each of the services supported by the module and places the information in the identity table allowing the host that is hosting the module to read the identity table to determine the plurality of services are offered by the module. In this manner, the invention supports a mechanism between host and a module to identify the module and its services and to configure the host and module to support those services.
Also included on the module is a session manager process executing on the processor. The session manager process accepts session commands on the interface to control the service processing units supporting the services. A module manager process is provided that executes on the processor of the module as well. The module manager process accepts module commands on the interface to control the operation of the module. The shared memory includes a control queue and a status queue which are separate from the data queues. These queues receive the session commands and module commands over the interface from a host hosting the module so that the host can control operation of the module and its services.
To control each service within the modules, the host and modules are equipped with a plurality of service message catalogs, one per service offered by the module. Each service message catalog contains messages related to particular services offered by a module. A host processing unit selects and sends particular messages selected from a service message catalog associated with a service to the module to establish, control and configure the service within the module. The service can thus process the a data communications session according to the service. Message catalogs that are provided are a digital data message catalog, an in-band signaling message catalog, a data/fax/voice message catalog, and a packet gateway services message catalog.